﻿if exists (select name from sysobjects where name ='spu_huymuasanpham')
	drop proc spu_huymuasanpham
go

create proc spu_huymuasanpham(@IDNguoiDungSanPham int, @IDSanPham int, @SoLuong int)
as
	begin tran
	declare @IDSanPhamHuy int,@ID int
	select @IDSanPhamHuy=ID from SanPham where ID=@IDSanPham and ThoiGianBatDauBan<=GETDATE() and ThoiGianKetThucBan>=GETDATE()
	select @ID=ID from NguoiDung_SanPham where ID=@IDNguoiDungSanPham and IDTrangThaiSanPham=1
	if(@IDSanPhamHuy is null)
	begin
		raiserror(N'Không thể huỷ mua vì sản phẩm đã hết thời hạn bán',16,1)
		rollback tran
		return
	end
	if(@ID is null)
	begin
		raiserror(N'Không thể huỷ mua vì sản phẩm đã được thanh toán',16,1)
		rollback tran
		return
	end
	update SanPham set SoLuong=SoLuong+@SoLuong where ID=@IDSanPham
	delete from NguoiDung_SanPham where ID=@IDNguoiDungSanPham
	if(@@ERROR<>0)
	begin
		raiserror(N'Đã có lỗi trong quá trình huỷ mua sản phẩm',16,1)
		rollback tran
		return
	end
	commit tran
go